package com.gitee.qdbp.general.common.api.settings.model;

import java.util.Date;
import com.gitee.qdbp.base.annotation.DataIsolation;
import com.gitee.qdbp.base.annotation.OperateTraces;

/**
 * 行政区划实体类
 *
 * @author zhh
 * @version 180514
 */
@OperateTraces(id = "id")
@DataIsolation(enable = false)
public class AreaDivisionBean extends AreaBean {

    /** 版本序列号 **/
    private static final long serialVersionUID = 1L;

    /** 表名 **/
    public static final String TABLE = "gn_area_division";

    /** 区域ID **/
    private String id;

    /** 使用场景 **/
    private String sceneType;

    /** 查询字符串 **/
    private String queryString;

    /** 创建时间 **/
    private Date createTime;

    /** 更新时间 **/
    private Date updateTime;

    /** 选项 **/
    private AreaDivisionOptions options;

    /** 获取区域ID **/
    public String getId() {
        return id;
    }

    /** 设置区域ID **/
    public void setId(String id) {
        this.id = id;
    }

    /** 获取使用场景 **/
    public String getSceneType() {
        return sceneType;
    }

    /** 设置使用场景 **/
    public void setSceneType(String sceneType) {
        this.sceneType = sceneType;
    }

    /** 获取查询字符串 **/
    public String getQueryString() {
        return queryString;
    }

    /** 设置查询字符串 **/
    public void setQueryString(String queryString) {
        this.queryString = queryString;
    }

    /** 获取创建时间 **/
    public Date getCreateTime() {
        return createTime;
    }

    /** 设置创建时间 **/
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /** 获取更新时间 **/
    public Date getUpdateTime() {
        return updateTime;
    }

    /** 设置更新时间 **/
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /** 获取选项 **/
    public AreaDivisionOptions getOptions() {
        return options;
    }

    /** 获取选项, force=是否强制返回非空对象 **/
    public AreaDivisionOptions getOptions(boolean force) {
        if (options == null && force) {
            options = new AreaDivisionOptions();
        }
        return options;
    }

    /** 设置选项 **/
    public void setOptions(AreaDivisionOptions options) {
        this.options = options;
    }

    /**
     * 将当前对象转换为子类对象
     *
     * @param clazz 目标类型
     * @return 目标对象
     */
    public <T extends AreaBean> T to(Class<T> clazz) {
        T instance = super.to(clazz);

        if (instance instanceof AreaDivisionBean) {
            AreaDivisionBean real = (AreaDivisionBean) instance;
            real.setId(this.getId()); // 区域ID
            real.setSceneType(this.getSceneType()); // 使用场景
            real.setQueryString(this.getQueryString()); // 查询字符串
            real.setCreateTime(this.getCreateTime()); // 创建时间
            real.setUpdateTime(this.getUpdateTime()); // 更新时间
            real.setOptions(this.getOptions()); // 选项
        }
        return instance;
    }

}
